package com.gitee.lougnib.simplekits.quick_generator.common.constants;

/**
 * 组件类型。
 */
public enum ComponentType {

    /**
     * 按钮。
     */
    BUTTON("Button"),
    /**
     * 输入框。
     */
    INPUT("Input"),
    /**
     * 数字输入框。
     */
    INPUT_NUMBER("InputNumber"),
    /**
     * 日期选择框。
     */
    DATE_PICKER("DatePicker"),
    /**
     * 多选框。
     */
    CHECKBOX("Checkbox"),
    /**
     * 单选框。
     */
    RADIO("Radio"),
    /**
     * 卡片。
     */
    CARD("Card"),
    /**
     * 数据表。
     */
    TABLE("Table"),
    /**
     * 数据行。
     */
    TABLE_ROW("TableRow"),
    /**
     * 数据列。
     */
    TABLE_COLUMN("TableColumn"),
    /**
     * 选择框的数据列。
     */
    TABLE_COLUMN_CHECKBOX("TableColumnCheckbox"),
    /**
     * 按钮的数据列。
     */
    TABLE_COLUMN_BUTTON("TableColumnButton"),
    /**
     * 栅格行。
     */
    GRID_ROW("GridRow"),
    /**
     * 栅格列。
     */
    GRID_COLUMN("GridColumn");

    private String value;

    private ComponentType(String value) {
        this.value = value;
    }
    
    /**
     * 取得值。
     */
    public String getValue() {
        return this.value;
    }
    
    /**
     * 取得名称。
     */
    public String getName() {
        return ComponentType.getName(this.value);
    }
    
    /**
     * 判断值是否相同。
     */
    public boolean equalsValue(String value) {
        return this.value.equals(value);
    }
    
    /**
     * 根据值取得枚举类型。
     *
     * @param value 值
     * @return 枚举类型
     */
    public static ComponentType getEnum(String value) {
        if (ComponentType.BUTTON.equalsValue(value)) {
            return ComponentType.BUTTON;
        } else if (ComponentType.INPUT.equalsValue(value)) {
            return ComponentType.INPUT;
        } else if (ComponentType.INPUT_NUMBER.equalsValue(value)) {
            return ComponentType.INPUT_NUMBER;
        } else if (ComponentType.DATE_PICKER.equalsValue(value)) {
            return ComponentType.DATE_PICKER;
        } else if (ComponentType.CHECKBOX.equalsValue(value)) {
            return ComponentType.CHECKBOX;
        } else if (ComponentType.RADIO.equalsValue(value)) {
            return ComponentType.RADIO;
        } else if (ComponentType.CARD.equalsValue(value)) {
            return ComponentType.CARD;
        } else if (ComponentType.TABLE.equalsValue(value)) {
            return ComponentType.TABLE;
        } else if (ComponentType.TABLE_ROW.equalsValue(value)) {
            return ComponentType.TABLE_ROW;
        } else if (ComponentType.TABLE_COLUMN.equalsValue(value)) {
            return ComponentType.TABLE_COLUMN;
        } else if (ComponentType.TABLE_COLUMN_CHECKBOX.equalsValue(value)) {
            return ComponentType.TABLE_COLUMN_CHECKBOX;
        } else if (ComponentType.TABLE_COLUMN_BUTTON.equalsValue(value)) {
            return ComponentType.TABLE_COLUMN_BUTTON;
        } else if (ComponentType.GRID_ROW.equalsValue(value)) {
            return ComponentType.GRID_ROW;
        } else if (ComponentType.GRID_COLUMN.equalsValue(value)) {
            return ComponentType.GRID_COLUMN;
        }

        return null;
    }
    
    /**
     * 根据值取得名称。
     *
     * @param value 值
     * @return 名称
     */
    public static String getName(String value) {
        if (ComponentType.BUTTON.equalsValue(value)) {
            return "按钮";
        } else if (ComponentType.INPUT.equalsValue(value)) {
            return "输入框";
        } else if (ComponentType.INPUT_NUMBER.equalsValue(value)) {
            return "数字输入框";
        } else if (ComponentType.DATE_PICKER.equalsValue(value)) {
            return "日期选择框";
        } else if (ComponentType.CHECKBOX.equalsValue(value)) {
            return "多选框";
        } else if (ComponentType.RADIO.equalsValue(value)) {
            return "单选框";
        } else if (ComponentType.CARD.equalsValue(value)) {
            return "卡片";
        } else if (ComponentType.TABLE.equalsValue(value)) {
            return "数据表";
        } else if (ComponentType.TABLE_ROW.equalsValue(value)) {
            return "数据行";
        } else if (ComponentType.TABLE_COLUMN.equalsValue(value)) {
            return "数据列";
        } else if (ComponentType.TABLE_COLUMN_CHECKBOX.equalsValue(value)) {
            return "选择框的数据列";
        } else if (ComponentType.TABLE_COLUMN_BUTTON.equalsValue(value)) {
            return "按钮的数据列";
        } else if (ComponentType.GRID_ROW.equalsValue(value)) {
            return "栅格行";
        } else if (ComponentType.GRID_COLUMN.equalsValue(value)) {
            return "栅格列";
        }

        return null;
    }
}